package com.lonely.goods.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lonely.goods.domain.dto.goods.*;
import com.lonely.goods.domain.entity.SysGoods;
import com.lonely.goods.domain.vo.goods.*;

import java.util.List;

/**
 * @author: 黄志标
 * @date: 2025/6/25 15:42
 * @description: 商品接口
 */
public interface IGoodsService extends IService<SysGoods> {

    /**
     * 分页查询
     *
     * @param queryDto
     * @return
     */
    Page<QueryGoodsPageVO> page(QueryGoodsPageDTO queryDto);

    /**
     * 添加新商品
     */
    void addGoods();

    /**
     * 根据商品id获取商品款信息
     *
     * @param goodsId
     * @return
     */
    GoodsDesignInfoVO getGoodsDesignInfo(Long goodsId);

    /**
     * 修改商品信息
     *
     * @param submitDTO
     */
    void submitDesignInfo(GoodsDesignInfoSubmitDTO submitDTO);

    /**
     * 根据商品id获取商品报价单信息
     *
     * @param goodsId
     * @return
     */
    GoodsQuotationSheetVO getGoodsQuotationSheet(Long goodsId);

    /**
     * 修改商品报价单
     *
     * @param submitDTO
     */
    void submitQuotationSheet(GoodsQuotationSheetSubmitDTO submitDTO);

    /**
     * 复制已有bom的数据查询
     *
     * @param queryDto
     * @return
     */
    List<CopyBomQueryVO> copyBomDataQuery(CopyBomQueryDTO queryDto);

    /**
     * 查询指定设计编码是否是套装
     *
     * @param designCode
     * @return
     */
    boolean isSuit(String designCode);

    /**
     * 修改商品状态
     *
     * @param changeStatusDTO
     */
    void changeStatus(ChangeStatusDTO changeStatusDTO);

    /**
     * 创建订单
     *
     * @param createOrderDTO
     */
    void createOrder(GoodsCreateOrderDTO createOrderDTO);

    /**
     * 基于商品id查询创建订单前的商品数据
     *
     * @param goodsId
     * @return
     */
    QueryGoodsByCreateOrderVO queryGoodsByCreateOrder(Long goodsId);

    /**
     * 根据sku获取对应的商品id
     *
     * @param sku
     * @return
     */
    Long getGoodsIdBySku(String sku);

    /**
     * 查询指定商品指定颜色下的总成本
     *
     * @param queryDto
     * @return
     */
    String queryGoodsTotalCostByColor(QueryGoodsTotalCostByColorDTO queryDto);

    /**
     * 查询通过率
     *
     * @param queryDto
     * @return
     */
    QueryPassRateVO queryPassRate(QueryPassRateDTO queryDto);

    /**
     * 审核批量打版
     *
     * @param reviewDTO
     * @return
     */
    void review(GoodsReviewDTO reviewDTO);

    /**
     * 更新商品库存信息
     *
     * @param updateStorageDTO
     */
    void updateStorage(UpdateGoodStorageDTO updateStorageDTO);

    /**
     * 同步打板信息到mes
     *
     * @param goodsId
     */
    void synchronizedStyle(Long goodsId);

    /**
     * 根据sku获取商品信息
     *
     * @param sku
     * @return
     */
    SysGoods getGoodsBySku(String sku);
}
